#include "Shm.hpp"
#include <string>
#include <cstring>

int main()
{
    // 1. 附着到共享内存（USER身份）
    Shm shm(pathname, projid, USER);
    char *mem = (char *)shm.VirtualAddr();
    printf("Client: 共享内存地址: %p\n", mem);
  
    //测试二
      printf("Client: 开始发送 A-Z（每秒1个字符）...\n\n");

    // 2. 循环发送A-Z
    for (char c = 'A'; c <= 'Z'; c++)
    {
        // 等待Server清空内存（确保上一个字符已被读取）
        while (strlen(mem) != 0)
        {
            usleep(50000);
        }

        // 写入当前字符到共享内存
        mem[0] = c;  // 直接写入单个字符
        mem[1] = '\0';  // 字符串结束符，避免乱码
        printf("Client 发送: %c\n", c);

        // 间隔1秒发送下一个字符（方便观察输出）
        sleep(1);
    }

    printf("\nClient: A-Z 发送完成，退出程序\n");
      //测试一
    // // 2. 循环向共享内存写入数据
    // std::string input;
    // while (true)
    // {
    //     // 提示输入
    //     std::cout << "Client 输入（输入quit退出）: ";
    //     std::getline(std::cin, input);  // 支持空格输入

    //     // 写入共享内存
    //     strncpy(mem, input.c_str(), shm.Size() - 1);  // 留1字节给'\0'
    //     mem[shm.Size() - 1] = '\0';  // 确保字符串结束

    //     // 若输入 "quit"，则退出
    //     if (input == "quit")
    //         break;

    //     // 等待 Server 读取并清空数据（简单同步）
    //     while (strlen(mem) != 0)
    //     {
    //         usleep(100000);
    //     }
    // }
    // printf("Client 退出\n");

    return 0;
}